package com.itany.corejava.code08_集合.map集合;

/**
 * @author MissChen
 * @date 2024年03月05日 16:55
 */

import java.util.HashMap;
import java.util.Scanner;

/**
 * 控制台输入一个字符串，统计字符串中每个字符出现的次数，保存到HashMap集合中
 * abcaa
 *
 */
public class Test06_练习 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.print("请输入一个字符串:");
        String s=sc.next();
        // HashMap<Character,Integer> map=test01(s);

        HashMap<Character,Integer> map=test02(s);
        System.out.println(map);


    }

    /**
     * 方式一:遍历字符串中的每一个字符，进行统计
     * @param s 传入进来的字符串
     * @return
     */
    public static HashMap<Character,Integer> test01(String s){
        HashMap<Character,Integer> map=new HashMap<>();
        for(int i=0;i<s.length();i++){//abcaa
            char c=s.charAt(i);//取出当前的字符'a'  'b' 'c'  'a'  'a'
            if(map.containsKey(c)){//判断当前集合中是否存在指定key的数据
                int count=map.get(c);
                map.put(c,count+1);
            }else{
                map.put(c,1);
            }
        }
        return map;
    }

    /**
     * 方式二:遍历字符串中的每一个字符，进行统计
     * @param s
     * @return
     */
    public static HashMap<Character,Integer> test02(String s){
        HashMap<Character,Integer> map=new HashMap<>();
        while(!s.isEmpty()){//abcaa

            //取出字符串中的第一个字符
            char c=s.charAt(0);//a     b   c

            //将字符串的与第一个字符一致的所有字符替换成空字符串
            String s2=s.replace(c+"","");//bc   c   ""

            //原来的字符串长度-新的字符串的长度=出现的次数
            map.put(c,s.length()-s2.length());

            //将新的字符串赋值给原字符串，继续下一个字符的替换操作
            s=s2;//s="bc"    s="c"

        }
       return map;
    }




}
